home *** CD-ROM | disk | FTP | other *** search
/ Go Ronald / Go Ronald Voice Interactive CD.iso / Data1.cab / _A78B221671294700924B8ABD93D36F0B / scripts / __Packages / mx / lang / Locale.as
Text File  |  2005-08-05  |  5KB  |  163 lines

  1. class mx.lang.Locale
  2. {
  3.    static var xmlLang = System.capabilities.language;
  4.    static var xmlMap = new Object();
  5.    static var stringMap = new Object();
  6.    static var delayedInstanceArray = new Array();
  7.    static var currentXMLMapIndex = -1;
  8.    function Locale()
  9.    {
  10.    }
  11.    static function setFlaName(name)
  12.    {
  13.       mx.lang.Locale.flaName = name;
  14.    }
  15.    static function setDefaultLang(langCode)
  16.    {
  17.       mx.lang.Locale.defaultLang = langCode;
  18.    }
  19.    static function addXMLPath(langCode, path)
  20.    {
  21.       if(mx.lang.Locale.xmlMap[langCode] == undefined)
  22.       {
  23.          mx.lang.Locale.xmlMap[langCode] = new Array();
  24.       }
  25.       mx.lang.Locale.xmlMap[langCode].push(path);
  26.    }
  27.    static function checkXMLStatus()
  28.    {
  29.       var _loc1_ = mx.lang.Locale.xmlDoc.loaded && mx.lang.Locale.xmlDoc.status == 0;
  30.       return _loc1_;
  31.    }
  32.    static function addDelayedInstance(instance, stringID)
  33.    {
  34.       mx.lang.Locale.delayedInstanceArray.push({inst:instance,strID:stringID});
  35.       var _loc1_ = mx.lang.Locale.delayedInstanceArray.length;
  36.    }
  37.    static function checkDelayArray()
  38.    {
  39.       var _loc1_ = 0;
  40.       while(_loc1_ < mx.lang.Locale.delayedInstanceArray.length)
  41.       {
  42.          if(mx.lang.Locale.delayedInstanceArray[_loc1_] == undefined)
  43.          {
  44.             return false;
  45.          }
  46.          _loc1_ = _loc1_ + 1;
  47.       }
  48.       return true;
  49.    }
  50.    static function setLoadCallback(loadCallback)
  51.    {
  52.       mx.lang.Locale.callback = loadCallback;
  53.    }
  54.    static function loadString(id)
  55.    {
  56.       return mx.lang.Locale.stringMap[id];
  57.    }
  58.    static function initialize()
  59.    {
  60.       mx.lang.Locale.xmlDoc = new XML();
  61.       mx.lang.Locale.xmlDoc.ignoreWhite = true;
  62.       mx.lang.Locale.xmlDoc.onLoad = function(success)
  63.       {
  64.          mx.lang.Locale.onXMLLoad(success);
  65.          mx.lang.Locale.callback.call(null,success);
  66.       };
  67.       var _loc1_ = mx.lang.Locale.xmlLang;
  68.       if(mx.lang.Locale.xmlMap[mx.lang.Locale.xmlLang] == undefined)
  69.       {
  70.          _loc1_ = mx.lang.Locale.defaultLang;
  71.       }
  72.       mx.lang.Locale.currentXMLMapIndex = 0;
  73.       mx.lang.Locale.xmlDoc.load(mx.lang.Locale.xmlMap[_loc1_][0]);
  74.    }
  75.    static function onXMLLoad(success)
  76.    {
  77.       if(success == true)
  78.       {
  79.          delete mx.lang.Locale.stringMap;
  80.          mx.lang.Locale.stringMap = new Object();
  81.          mx.lang.Locale.parseStringsXML(mx.lang.Locale.xmlDoc);
  82.          mx.lang.Locale.assignDelayedInstances();
  83.       }
  84.       else
  85.       {
  86.          var _loc1_ = mx.lang.Locale.xmlLang;
  87.          if(mx.lang.Locale.xmlMap[mx.lang.Locale.xmlLang] == undefined)
  88.          {
  89.             _loc1_ = mx.lang.Locale.defaultLang;
  90.          }
  91.          mx.lang.Locale.currentXMLMapIndex = mx.lang.Locale.currentXMLMapIndex + 1;
  92.          mx.lang.Locale.xmlDoc.load(mx.lang.Locale.xmlMap[_loc1_][mx.lang.Locale.currentXMLMapIndex]);
  93.       }
  94.    }
  95.    static function parseStringsXML(doc)
  96.    {
  97.       if(doc.childNodes.length > 0 && doc.childNodes[0].nodeName == "xliff")
  98.       {
  99.          mx.lang.Locale.parseXLiff(doc.childNodes[0]);
  100.       }
  101.    }
  102.    static function parseXLiff(node)
  103.    {
  104.       if(node.childNodes.length > 0 && node.childNodes[0].nodeName == "file")
  105.       {
  106.          mx.lang.Locale.parseFile(node.childNodes[0]);
  107.       }
  108.    }
  109.    static function parseFile(node)
  110.    {
  111.       if(node.childNodes.length > 1 && node.childNodes[1].nodeName == "body")
  112.       {
  113.          mx.lang.Locale.parseBody(node.childNodes[1]);
  114.       }
  115.    }
  116.    static function parseBody(node)
  117.    {
  118.       var _loc1_ = 0;
  119.       while(_loc1_ < node.childNodes.length)
  120.       {
  121.          if(node.childNodes[_loc1_].nodeName == "trans-unit")
  122.          {
  123.             mx.lang.Locale.parseTransUnit(node.childNodes[_loc1_]);
  124.          }
  125.          _loc1_ = _loc1_ + 1;
  126.       }
  127.    }
  128.    static function parseTransUnit(node)
  129.    {
  130.       var _loc2_ = node.attributes.resname;
  131.       if(_loc2_.length > 0 && node.childNodes.length > 0 && node.childNodes[0].nodeName == "source")
  132.       {
  133.          var _loc1_ = mx.lang.Locale.parseSource(node.childNodes[0]);
  134.          if(_loc1_.length > 0)
  135.          {
  136.             mx.lang.Locale.stringMap[_loc2_] = _loc1_;
  137.          }
  138.       }
  139.    }
  140.    static function parseSource(node)
  141.    {
  142.       if(node.childNodes.length > 0)
  143.       {
  144.          return node.childNodes[0].nodeValue;
  145.       }
  146.       return "";
  147.    }
  148.    static function assignDelayedInstances()
  149.    {
  150.       var _loc1_ = 0;
  151.       while(_loc1_ < mx.lang.Locale.delayedInstanceArray.length)
  152.       {
  153.          if(mx.lang.Locale.delayedInstanceArray[_loc1_] != undefined)
  154.          {
  155.             var _loc3_ = mx.lang.Locale.delayedInstanceArray[_loc1_].inst;
  156.             var _loc2_ = mx.lang.Locale.delayedInstanceArray[_loc1_].strID;
  157.             _loc3_.text = mx.lang.Locale.loadString(_loc2_);
  158.          }
  159.          _loc1_ = _loc1_ + 1;
  160.       }
  161.    }
  162. }
  163.